Errors can occur when information is transmitted between a transmitter and a receiver. Error correction codes, such as Low Density Parity Check (LDPC) codes, are often used to detect and correct such errors. LDPC codes are block codes based on a parity check matrix, H. See, for example, R. G. Gallager, “Low-Density Parity-Check Code,” IRE Trans. Inform. Theory, vol. IT-8, 21-28 (January 1962). LDPC codes are useful in high speed data transmission systems, for example, over a medium or carrier or via electromagnetic radiation, such as satellite communications, wireless transmissions, fiber optics, electrical wiring or cable and a variety of storage media, including hard disk drives, optical disks, and magnetic bands.
A given LDPC code is defined by a parity check matrix, H. A non-zero entry of the parity check matrix defines a parity check used to detect and correct errors in the received codeword. An LDPC parity check matrix is said to be sparse. In other words, there are a small number of non-zero entries in the matrix relative to the size of the matrix. If the parity check matrix, H, has dimension (n−k, n), a codeword is said to be n bits long with k information bits and n−k parity check bits. A parity check matrix for an (n, k) code has n columns and n−k rows.
Typically, a soft decision decoder for decoding LDPC codes and other turbo codes compute reliability values based on log likelihood ratios (LLRs). Typically, these reliability values require natural log or exponential computations. It has been found, however, that natural log( ) and exp( ) are inconvenient to implement with binary numbers. A need therefore exists for a soft decision decoder with reduced computational complexity.